package com.jinan.algorithm.greedy;

/**
 * 最长连续递增序列
 * 给定一个未经排序的整数数组,找到最长且连续递增的子序列,并返回该序列的长度。
 * 序列的下标是连续的
 */
public class LongestContinuousIncreasingSubsequence {
    /**
     * 思路：贪心算法
     * 1. 初始化最大长度为1，因为至少有一个元素的序列总是递增的
     * 2. 初始化当前连续递增子序列的长度为1
     * 3. 遍历数组，如果当前元素大于前一个元素，则当前连续递增子序列长度加1
     * 4. 否则，重置当前连续递增子序列长度为1
     * 5. 更新最大长度
     * 6. 返回最大长度
     * @param nums
     * @return
     */
    public static int findLengthOfLCIS(int[] nums) {
        if(nums==null||nums.length==0){
            return 0;
        }
        // 初始化最大长度为1，因为至少有一个元素的序列总是递增的
        int max = 1;
        // 当前连续递增子序列的长度
        int currentLen = 1;
        for (int i = 1; i < nums.length; i++){
            // 如果当前元素大于前一个元素，则当前连续递增子序列长度加1
            // 否则，重置当前连续递增子序列长度为1
            if(nums[i]<nums[i-1]){
                currentLen = 1;
            }else{
                currentLen++;
                // 更新最大长度
                max = Math.max(max,currentLen);
            }
        }
        return max;
    }

    public static void main(String[] args) {
        int[] nums = {1,3,5,4,7};
        System.out.println(findLengthOfLCIS(nums));
    }
}
